home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / sbin / virt-what < prev    next >
Encoding:
Text File  |  2009-12-26  |  3.6 KB  |  144 lines

  1. #!/bin/bash -
  2. # virt-what.  Generated from virt-what.in by configure.
  3. # Copyright (C) 2008-2009 Red Hat Inc.
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of the GNU General Public License as published by
  7. # the Free Software Foundation; either version 2 of the License, or
  8. # (at your option) any later version.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19. # 'virt-what' tries to detect the type of virtualization being
  20. # used (or none at all if we're running on bare-metal).  It prints
  21. # out one of more lines each being a 'fact' about the virtualization.
  22. #
  23. # Please see also the manual page virt-what(1).
  24. # This script should be run as root.
  25. #
  26. # The following resources were useful in writing this script:
  27. # . http://www.dmo.ca/blog/20080530151107
  28.  
  29. VERSION="1.2"
  30.  
  31. function fail {
  32.     echo "virt-what: $1"
  33.     exit 1
  34. }
  35.  
  36. function usage {
  37.     echo "virt-what [options]"
  38.     echo "Options:"
  39.     echo "  --help          Display this help"
  40.     echo "  --version       Display version and exit"
  41.     exit 0
  42. }
  43.  
  44. # Handle the command line arguments, if any.
  45.  
  46. TEMP=`getopt -o v --long help --long version -n 'virt-what' -- "$@"`
  47. if [ $? != 0 ]; then exit 1; fi
  48. eval set -- "$TEMP"
  49.  
  50. while true; do
  51.     case "$1" in
  52.     --help) usage ;;
  53.     -v|--version) echo $VERSION; exit 0 ;;
  54.     --) shift; break ;;
  55.     *) fail "internal error" ;;
  56.     esac
  57. done
  58.  
  59. # Check we're running as root.
  60.  
  61. uid=`id -u`
  62. if [ "$uid" != 0 ]; then
  63.     fail "this script must be run as root"
  64. fi
  65.  
  66. # Add /sbin and /usr/sbin to the path so we can find system
  67. # binaries like dmicode.
  68. # Add /usr/libexec to the path so we can find the helper binary.
  69. prefix=/usr
  70. exec_prefix=${prefix}
  71. PATH=${prefix}/lib/virt-what:/sbin:/usr/sbin:$PATH
  72.  
  73. # Check for various products in the BIOS information.
  74.  
  75. dmi=`dmidecode 2>&1`
  76.  
  77. if echo "$dmi" | grep -q 'Manufacturer: VMware'; then
  78.     echo vmware
  79. fi
  80.  
  81. if echo "$dmi" | grep -q 'Manufacturer: Microsoft Corporation'; then
  82.     echo virtualpc
  83. fi
  84.  
  85. # Check for VirtualBox.
  86. # Added by Laurent L├⌐onard.
  87. if echo "$dmi" | grep -q 'Manufacturer: innotek GmbH'; then
  88.     echo virtualbox
  89. fi
  90.  
  91. # Check for OpenVZ / Virtuozzo.
  92. # Added by Evgeniy Sokolov.
  93. # /proc/vz - always exists if OpenVZ kernel is running (inside and outside
  94. # container)
  95. # /proc/bc - exists on node, but not inside container.
  96.  
  97. if [ -d /proc/vz -a ! -d /proc/bc ]; then
  98.     echo openvz
  99. fi
  100.  
  101. # Check for UML.
  102. # Added by Laurent L├⌐onard.
  103. if grep -q 'UML' /proc/cpuinfo; then
  104. ┬á ┬á echo uml
  105. fi
  106.  
  107. # To tell if it is Xen and KVM HVM (fully virtualized) we can use this
  108. # helper C program.
  109.  
  110. cpuid=`virt-what-cpuid-helper`
  111.  
  112. # Check for Xen.
  113.  
  114. if [ "$cpuid" = "XenVMMXenVMM" ]; then
  115.     echo xen; echo xen-hvm
  116.     is_xen=1
  117. elif [ -f /proc/xen/privcmd ]; then
  118.     echo xen; echo xen-dom0
  119.     is_xen=1
  120. elif [ -f /proc/xen/capabilities ]; then
  121.     echo xen; echo xen-domU
  122.     is_xen=1
  123. elif [ -d /proc/xen ]; then
  124.     # This directory can be present when Xen paravirt drivers are
  125.     # installed, even on baremetal.  Don't confuse people by
  126.     # printing anything.
  127.     :
  128. fi
  129.  
  130. # Check for QEMU/KVM.
  131.  
  132. if [ ! "$is_xen" ]; then
  133.     # Disable this test if we know this is Xen already, because Xen
  134.     # uses QEMU for its device model.
  135.  
  136.     if grep -q 'QEMU' /proc/cpuinfo; then
  137.     if [ "$cpuid" = "KVMKVMKVM" ]; then
  138.         echo kvm
  139.     else
  140.         echo qemu
  141.     fi
  142.     fi
  143. fi
  144.